const gulp = require('gulp') //引入本地gulp
const cssmin = require('gulp-cssmin')

const sassObj = require('sass')
const sassGulp = require('gulp-sass')
const sass = sassGulp(sassObj)

const uglify = require('gulp-uglify')
const babel = require('gulp-babel')

const htmlmin = require('gulp-htmlmin')

const clean = require('gulp-clean')

// web服务包, nginx liveserver功能
const webserver = require('gulp-webserver')
/**
 * 压缩css任务
 *   1. 安装gulp-cssmin
 */
gulp.task('css', function () {
	return gulp.src('./src/css/**')  //读文件
          .pipe(cssmin())  //压缩处理
          .pipe(gulp.dest('./dist/css/')) //写文件
})
/**
 * sass任务
 *   1. sass->css   
 *        安装 npm i sass -D
 *        安装 npm i gulp-sass -D  
 *   2. 压缩css
 */
gulp.task('sass',function(){
    return gulp.src('./src/sass/**')
        .pipe(sass())  // sass->css
        .pipe(cssmin())  //压缩
        .pipe(gulp.dest('./dist/css/'))
})

/**
 * js任务
 */
gulp.task('js',function(){
    return gulp.src('./src/js/**')
        .pipe(babel({
            presets:['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js/'))
})

/**
 * html任务
 *   压缩html文件
 */
gulp.task('html',function(){
    return gulp.src('./src/pages/**')
               .pipe(htmlmin({
                   removeEmptyAttributes:true,
                   collapseWhitespace:true
               }))
               .pipe(gulp.dest('./dist/pages/'))
})

/**
 * lib任务
 */
gulp.task('lib',function(){
    return gulp.src('./src/lib/**/**')
               .pipe(gulp.dest('./dist/lib/'))
})

/**
 * static任务
 */
 gulp.task('static',function(){
    return gulp.src('./src/static/**')
               .pipe(gulp.dest('./dist/static/'))
})

/**
 * 清除dist目录任务
 */
gulp.task('clean',function(){
    return gulp.src('./dist',{allowEmpty:true})
               .pipe(clean())
})

/**
 * web服务
 */
gulp.task('webserver',function(){
    return gulp.src('./dist')
               .pipe(webserver({
                   host:'10.7.173.102',
                   port: 3005,
                   livereload:true,
                   open:'./pages/index.html'
               }))
})

/**
 * watch 任务
 *    监听文件变化自动打包
 */
gulp.task('watch',function(){
    gulp.watch('./src/css/**',gulp.parallel('css'))
    gulp.watch('./src/sass/**',gulp.parallel('sass'))
    gulp.watch('./src/js/**',gulp.parallel('js'))
    gulp.watch('./src/pages/**',gulp.parallel('html'))
    gulp.watch('./src/lib/**/**',gulp.parallel('lib'))
    gulp.watch('./src/static/**/**',gulp.parallel('static'))
})


/**
 * 按顺序执行
 */
gulp.task('series1', gulp.series('css','js','sass','html','lib','static') )
/**
 * 并发执行
 */
gulp.task('parallel1', gulp.parallel('css','js','sass','html','lib','static') )

/**
 * 默认任务
 *   gulp
 */
exports.default = gulp.series('clean',gulp.parallel('css','js','sass','html','lib','static'), 'webserver','watch')